/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * hAdministrador.java
 *
 * Created on 11/07/2012, 04:25:01 PM
 */

package interfaz;

import Clases.Catedratico;
import Clases.Curso;
import Clases.Grado;
import Clases.hLlenarPrins;
import Controladores.UsuarioJpaController;
import com.l2fprod.common.swing.JLinkButton;
import com.l2fprod.common.swing.JTaskPaneGroup;
import escuela.conexion;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import javax.swing.JOptionPane;

/**
 *
 * @author hC4stillo
 * Formulario principal de administrador:
 * Este llena un panel con la lista de los grados disponibles en el ciclo, conteniendo tambien los cursos impartidos en cada grado, dando la posibilidad de crear cursos, grados, asignar catedraticos a cursos, unidades a cursos, una planificacion, crear usuario, catedraticos, alumnos etc. para esto se hace llamada a el formulario correspondiente a cada uno de ellos
 */
public class hAdministrador extends javax.swing.JFrame {

    /** Creates new form hAdministrador */
    public hAdministrador() {
        initComponents();        
    }
    /**
     * constructor llena la lista
     * @param hCiclo el nombre del ciclo para poder obtener los cursos que este posee
     */
    public hAdministrador(String hCiclo) {
        initComponents();
         EntityManagerFactory emf = conexion.ObtenerInstancia().ObtenerEMF();
//        UsuarioJpaController ujc = new UsuarioJpaController();
        EntityManager em = emf.createEntityManager();

        Query q=em.createNativeQuery("SELECT nombre FROM Grado g INNER JOIN gradoSeccionCiclo gs ON g.idGrado = gs.idGrado WHERE idCiclo ="+hCiclo);
        List<Object> hLista = q.getResultList();
        hLlenarPrins hLlenar = new hLlenarPrins();
        ArrayList<JTaskPaneGroup> hRelleno= hLlenar.hListaGrados(hLista,this.jLinkButton1);
        for(int i = 0; i<hRelleno.size();i++)
          this.jTaskPane1.add(hRelleno.get(i));
        this.jTaskPane1.repaint();
        this.jTaskPane1.revalidate();
        this.repaint();
        this.validate();
        //JOptionPane.showMessageDialog(rootPane,hLista.size());
        //consulta a todos los grados del ciclo

    }
    public hAdministrador(List<Grado> hLista) {
        initComponents();
        
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPopupMenu1 = new javax.swing.JPopupMenu();
        jMenuItem8 = new javax.swing.JMenuItem();
        jTaskPane1 = new com.l2fprod.common.swing.JTaskPane();
        jLinkButton1 = new com.l2fprod.common.swing.JLinkButton();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem7 = new javax.swing.JMenuItem();
        jMenuItem4 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        jMenuItem12 = new javax.swing.JMenuItem();
        jMenuItem10 = new javax.swing.JMenuItem();
        jMenuItem11 = new javax.swing.JMenuItem();
        jMenuItem13 = new javax.swing.JMenuItem();
        jMenuItem14 = new javax.swing.JMenuItem();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenuItem9 = new javax.swing.JMenuItem();
        jMenuItem5 = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem6 = new javax.swing.JMenuItem();

        jMenuItem8.setText("Cerrar Pestaña Actual");
        jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem8ActionPerformed(evt);
            }
        });
        jPopupMenu1.add(jMenuItem8);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Administrador");

        jTaskPane1.setBackground(new java.awt.Color(0, 102, 255));

        jLinkButton1.setForeground(new java.awt.Color(255, 255, 255));
        jLinkButton1.setText("_");
        jLinkButton1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLinkButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jLinkButton1ActionPerformed(evt);
            }
        });
        jTaskPane1.add(jLinkButton1);

        jTabbedPane1.setComponentPopupMenu(jPopupMenu1);

        jMenu1.setText("Archivo");

        jMenuItem7.setText("Alumnos");
        jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem7ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem7);

        jMenuItem4.setText("Catedraticos");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem4);

        jMenuItem2.setText("Ciclo");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenu3.setText("Cursos");
        jMenu3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu3ActionPerformed(evt);
            }
        });

        jMenuItem12.setText("Asignar Curso");
        jMenu3.add(jMenuItem12);

        jMenuItem10.setText("Ciclo - curso");
        jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem10ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem10);

        jMenuItem11.setText("Curso - unidad");
        jMenuItem11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem11ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem11);

        jMenuItem13.setText("Planificacion Curso");
        jMenuItem13.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem13ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem13);

        jMenuItem14.setText("Unidades");
        jMenuItem14.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem14ActionPerformed(evt);
            }
        });
        jMenu3.add(jMenuItem14);

        jMenu1.add(jMenu3);

        jMenuItem3.setText("Cursos");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);

        jMenuItem9.setText("Planificacion");
        jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem9ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem9);

        jMenuItem5.setText("Usuarios");
        jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem5ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem5);

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem1.setText("Cerrar");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Ayuda");

        jMenuItem6.setText("Acerca de...");
        jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem6ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem6);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTaskPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 270, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 607, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 539, Short.MAX_VALUE)
                    .addComponent(jTaskPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 539, Short.MAX_VALUE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents
/**
 * cierra el formulario y la aplicacion
 * @param evt
 */
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        // TODO add your handling code here:
        this.dispose();
    }//GEN-LAST:event_jMenuItem1ActionPerformed
/**
 * hace llamada al formulario de usuarios
 * @param evt
 */
    private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
        // TODO add your handling code here:
        JUsuario hJU = new JUsuario(null,true);
        hJU.setLocationRelativeTo(null);
        hJU.setVisible(true);

    }//GEN-LAST:event_jMenuItem5ActionPerformed
/**
 * hace llamada al formulario de adminisstracion de catedraticos
 * @param evt
 */
    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
        // TODO add your handling code here:
        JAdminCatedratico hCatedratico = new JAdminCatedratico(null,true);
        hCatedratico.setLocationRelativeTo(null);
        hCatedratico.setVisible(true);
    }//GEN-LAST:event_jMenuItem4ActionPerformed
/**
 * se hace una llamada al formulario control de alumnos
 * @param evt
 */
    private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
        // TODO add your handling code here:
        ControlAlumno hCA = new ControlAlumno(this,true);
        hCA.setLocationRelativeTo(null);
        hCA.setVisible(true);
    }//GEN-LAST:event_jMenuItem7ActionPerformed
/**
 * se hace una llamda al formulario encargado del ingreso del grado ciclo seccion
 * @param evt
 */
    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        // TODO add your handling code here
       bIngresoGradoCicloSeccion bICS = new bIngresoGradoCicloSeccion(this,true);
       bICS.setLocationRelativeTo(null);
       bICS.setVisible(true);
    }//GEN-LAST:event_jMenuItem2ActionPerformed
/**
 * este es el modelo de como funcionan los linkbutton dentro de los jtaskpanebutton
 */
    private void jLinkButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jLinkButton1ActionPerformed
        // TODO add your handling code here
        EntityManagerFactory emf = conexion.ObtenerInstancia().ObtenerEMF();
        EntityManager em = emf.createEntityManager();
        Query q=em.createNativeQuery("SELECT a.Nombres FROM gradoseccionciclo gsc INNER JOIN grado g ON gsc.idGrado=g.idGrado INNER JOIN gradoalumno ga ON gsc.idGradoSeccionCiclo=ga.idGradoSeccionCiclo INNER JOIN alumno a ON ga.idAlumno=a.idAlumno WHERE nombre = '"+this.jLinkButton1.getText()+"'");
        List<Object> hList1 = q.getResultList();
        //JOptionPane.showMessageDialog(this, hList1.size());
        q= em.createNativeQuery("SELECT a.Apellidos FROM gradoseccionciclo gsc INNER JOIN grado g ON gsc.idGrado=g.idGrado INNER JOIN gradoalumno ga ON gsc.idGradoSeccionCiclo=ga.idGradoSeccionCiclo INNER JOIN alumno a ON ga.idAlumno=a.idAlumno WHERE nombre = '"+this.jLinkButton1.getText()+"'");
         List<Object> hList2 = q.getResultList();

        // Catedratico hCa=(Catedratico) q.getSingleResult();
        hPanel hp = new hPanel(hList1,hList2,this.jLinkButton1.getText());
        hp.add(this.jPopupMenu1);

        
        this.jTabbedPane1.addTab(this.jLinkButton1.getText(), hp);



    }//GEN-LAST:event_jLinkButton1ActionPerformed

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        // TODO add your handling code here:
        
    }//GEN-LAST:event_jMenuItem3ActionPerformed
/*
 * quita las pestañas abiertas
 */
    private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
        // TODO add your handling code here:
        this.jTabbedPane1.remove(this.jTabbedPane1.getSelectedComponent());
    }//GEN-LAST:event_jMenuItem8ActionPerformed
/*
 * hace llamada al formulario encargado de las planificaciones
 */
    private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
        // TODO add your handling code here:
        aPlanificacion hPlan = new aPlanificacion(this,true);
        hPlan.setLocationRelativeTo(null);
        hPlan.setVisible(true);
    }//GEN-LAST:event_jMenuItem9ActionPerformed
/*
 * muestra la informacion de los desarrolladores...
 */
    private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
        // TODO add your handling code here:
        hAcerca acerca = new hAcerca(null,true);
        acerca.setLocationRelativeTo(null);
        acerca.setVisible(true);
    }//GEN-LAST:event_jMenuItem6ActionPerformed
/*
 * hace llamada al formulario de la administracion de cursos
 */
    private void jMenu3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenu3ActionPerformed
        // TODO add your handling code here:
        AdminCurso hCurso = new AdminCurso(this,true);
        hCurso.setLocationRelativeTo(null);
        hCurso.setVisible(true);
    }//GEN-LAST:event_jMenu3ActionPerformed
/*
 * llama a la administracion ciclo curso
 */
    private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem10ActionPerformed
        // TODO add your handling code here:
        AdminCicloCurso hACC = new AdminCicloCurso(this,true);
        hACC.setLocationRelativeTo(null);
        hACC.setVisible(true);
    }//GEN-LAST:event_jMenuItem10ActionPerformed
/*
 * formulario para asignar unidades a un curso
 */
    private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem11ActionPerformed
        // TODO add your handling code here:
        AsignacionCursoUnidad hACU = new AsignacionCursoUnidad(this,true);
        hACU.setLocationRelativeTo(null);
        hACU.setVisible(true);
    }//GEN-LAST:event_jMenuItem11ActionPerformed
/*
 * formulario para planificaciones
 */
    private void jMenuItem13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem13ActionPerformed
        // TODO add your handling code here:
        aPlanificacion hP = new aPlanificacion(this,true);
        hP.setLocationRelativeTo(null);
        hP.setVisible(true);
    }//GEN-LAST:event_jMenuItem13ActionPerformed
/*
 * formulario para administracion de unidades
 */
    private void jMenuItem14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem14ActionPerformed
        // TODO add your handling code here:
        aUnidad hU = new aUnidad(this,true);
        hU.setLocationRelativeTo(null);
        hU.setVisible(true);
    }//GEN-LAST:event_jMenuItem14ActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new hAdministrador().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.l2fprod.common.swing.JLinkButton jLinkButton1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem10;
    private javax.swing.JMenuItem jMenuItem11;
    private javax.swing.JMenuItem jMenuItem12;
    private javax.swing.JMenuItem jMenuItem13;
    private javax.swing.JMenuItem jMenuItem14;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JMenuItem jMenuItem5;
    private javax.swing.JMenuItem jMenuItem6;
    private javax.swing.JMenuItem jMenuItem7;
    private javax.swing.JMenuItem jMenuItem8;
    private javax.swing.JMenuItem jMenuItem9;
    private javax.swing.JPopupMenu jPopupMenu1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private com.l2fprod.common.swing.JTaskPane jTaskPane1;
    // End of variables declaration//GEN-END:variables

}
